package com.mawujun.util;

import java.text.SimpleDateFormat;
import java.util.Date;

import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;

/**
 * 默认的格式化格式是：
 * 使用方法：
 * 附加:关于使用JSON-LIB转换带有DATE类型的对象需要额外的一些设置

	JsonConfig cfg=new JsonConfig();
	cfg.registerJsonValueProcessor(java.util.Date.class, new JsonValueProcessorImpl());
	cfg.registerJsonValueProcessor(java.sql.Date.class, new JsonValueProcessorImpl());
	JSONObject obj = JSONObject.fromObject(info,cfg);
	info是要被转换的对象，该对象中包含Date（）字段
	
	反向的转换是，就是从json转换成bean对象
	JSONObject jsonPerson = JSONObject.fromObject(personData);   
	String[] dateFormats = new String[] {"yyyy/MM/dd hh点mm分ss秒"};   
	JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats));   
	Person person = (Person)JSONObject.toBean(jsonPerson, Person.class);
 * @author mawujun
 *
 */
public class JsonValueProcessorImpl implements JsonValueProcessor {

	private String dateFormat = "yyyy-MM-dd";

	public JsonValueProcessorImpl() {

	}

	public Object processArrayValue(Object value, JsonConfig jsonConfig) {
		String[] obj = {};
		if (value instanceof Date[]) {
			SimpleDateFormat sf = new SimpleDateFormat();
			Date[] dates = (Date[]) value;
			obj = new String[dates.length];
			for (int i = 0; i < dates.length; i++) {
				obj[i] = sf.format(dates[i]);
			}
		}
		return obj;

	}

	public Object processObjectValue(String key, Object value,
			JsonConfig jsonConfig) {
		if(value==null){
			return null;
		}
		if(jsonConfig==null){
			throw new IllegalArgumentException("JsonConfig参数不能为null");
		}
		if (value instanceof Date) {
			String str = new SimpleDateFormat(dateFormat).format((Date) value);
			return str;
		}
		return value.toString();
	}

	/**
	 * 获取格式化
	 * @return
	 */
	public String getFormat() {
		return dateFormat;
	}

	/**
	 * 设置格式化
	 * @param format
	 */
	public void setFormat(String format) {
		this.dateFormat = format;
	}

}
